#ifndef _VL_GENERATE_SUPPORT__H_
#define _VL_GENERATE_SUPPORT__H_

#include "support/vl_support.h"

namespace VL {

/**
 * @Author: CimZzz
 * @Date: 2022-08-04 14:41:54
 * 
 * 生成支持
 * 不区分语言
 */
class GenerateSupport : public VLSupport {
public:
	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-19 16:05:13
	 * 
	 * 构造方法
	 */
	explicit GenerateSupport();

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-19 15:53:54
	 * 
	 * 执行动作
	 * 
	 * @param env 环境变量
	 */
	virtual void doAction(VLEnv* env);

private:

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-19 16:12:55
	 * 
	 * 生成工具链文件
	 * 
	 * @param name 文件名
	 * @param dir 生成文件所在目录指针
	 */
	void generateToolchainFile(const std::string& name, const VLFile* dir);

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-19 16:15:48
	 * 
	 * 生成类文件
	 * 
	 * @param name 文件名
	 * @param dir 生成文件所在目录指针
	 */
	void generateClassFile(const std::string& name, const VLFile* dir);

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-19 16:17:59
	 * 
	 * 生成通用的项目结构
	 * 
	 * @param env 环境变量
	 */
	void generateCommonProjectStructure(VLEnv* env);


	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-04 11:42:39
	 * 
	 * 生成可执行项目工程
	 * 
	 * @param env 环境变量
	 */
	void generateExecProject(VLEnv* env);

	/**
	 * @Author: CimZzz
	 * @Date: 2022-08-04 11:43:19
	 * 
	 * 生成库项目工程
	 * 
	 * @param env 环境变量
	 */
	void generateLibraryProject(VLEnv* env);
};

}

#endif // _VL_GENERATE_SUPPORT__H_
